The domain shader (DirectX) also called tessellation evaluation shader in the OpenGL rendering pipeline, is one of the three stages that work together with the hull shader (tessellation control shader in OpenGL) and the tessellator to implement tessellation. The domain shader generates surface geometry from the transformed control points from a hull shader and the u, v coordinates from the tessellator stage. The domain shader is invoked once per tessellator stage output point (u, v coordinate), also called domain points (DPs)) and outputs the position of a vertex.
There currently exist two single instruction multiple data (SIMD) dispatch modes for domain shader execution by the hardware execution units (EU). Single-patch dispatch mode is where DPs from a single patch (or picture convex surface region) are processed in a SIMD thread and dual-patch dispatch mode is where two patches are processed in a single SIMD thread. The single-patch dispatch mode is used when there is a large amount of data per patch (domain points). For other workloads, which have four or less than four DPs per patch to be processed, called minimally tessellated patches, the dual-patch execution mode increases the shading efficiency of the threads.
Both the single and dual-patch kernels are produced each time the application requests a domain shader compilation. The hardware then decides to use a dual-patch kernel when two consecutive patches have each less than 4 DPs or when four or fewer DPs remain from a previous patch and a patch with four or fewer DP's arrived. The hardware uses the single-patch kernel for all the other cases.